import {ElMapExportTable} from "table-excel";
import {changeDateFormat} from "@/utils/time.js";

/**
 * 清洗列表中多余的字段
 * @description 简单清洗多余的数据
 * @author 青姝 2224693191@qq.com
 * @param data 清洗的表头
 * @returns {*} 只取title和dataIndex
 */
function wash(data) {
    return data.filter(item => {
        if (item.dataIndex !== "Operate") {
            return {
                title: item.title,
                dataIndex: item.dataIndex,
            };
        }
    });
}

/**
 * 统一格式化化时间
 * @description 格式化时间格式：YYYY-MM-DD HH:MM:SS
 * @author 青姝 2224693191@qq.com
 * @param data 数据
 * @returns {*}
 */
function formatTime(data) {
    return data.map(item => {
        for (let attr in item) {
            if (attr.indexOf("time") !== -1) {
                item[attr] = changeDateFormat(item[attr]);
            }
            if (attr === "status") {
                if (item[attr]) {
                    item[attr] = "正常";
                } else {
                    item[attr] = "禁用";
                }
            }
        }
        return item;
    });
}

/**
 * 导出正常表格到 Excel
 * @description 导出正常表格到 Excel
 * @author 青姝 2224693191@qq.com
 * @param name 表名
 * @param column 表头
 * @param data 数据
 * @returns {{style: {font: {bold: boolean}}}} 字体样式
 */
export const induce = (name, column, data) => {
    const columns = wash(column);
    const result = formatTime(data);
    const instance = new ElMapExportTable(
        {
            column: columns,
            data: result,
            sheetName: name, // sheet名称
            setRowStyle: ({data, columnIndex, rowIndex, type}) => {
                if (type === "header") {
                    return {
                        height: 20,
                        font: {size: 13.5, bold: true},
                    }
                }
            },
        },
        {
            indentSize: 1, // 默认是1,可自行调整
        }
    );
    instance.download(name);
};